#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
struct node//定义链表结点
{
    int data;//节点的值
    node* next;//单向链表,只有一个NEXT指针||指向下一个结点的指针
};
int main() {
    int n, m;scanf("%d %d", &n, &m);
    struct node* head, * p, * now, * prev;//定义变量
    head = new node;head->data = 1;head->next = NULL;//分配第一个节点，数据值为1
    now = head;//当前指针是头节点
    for (int i = 2; i <= n; i++)
    {
        p = new node; p->data = i; p->next = NULL;//p是新节点
        now->next = p;//把申请的新节点连到前面的链表上
        now = p;//指针后移一个
    }
    now->next = head;//尾指针指向头，循环链表建立完成
    //以上是建立链表
    now = head; prev = head;//从第一个开始数
    while ((n--) > 1)
    {
        for (int i = 1; i < m; i++)//数到m停下
        {
            prev = now;//记录上一个位置，用于下面跳过第m个节点
            now = now->next;
        }
        printf("%d ", now->data);//输出第m个节点，带空格
        prev->next = now->next;//跳过这个节点
        delete now;//释放节点
        now = prev->next;//新的一轮
    }
    printf("%d", now->data);//打印最后一个节点
    delete now;//释放最后一个节点
    return 0;
}